package entity

import "gitee.com/linxing_3/sr-core/domain/model"

func NewSysRole() *SysRole {
	return &SysRole{}
}

type SysRole struct {
	RoleId    string `json:"roleId" form:"roleId" gorm:"primaryKey;size:64;comment:角色ID"`        // 角色ID
	RoleName  string `json:"roleName" form:"roleName" gorm:"size:128;comment:角色名称"`              // 角色名称
	RoleKey   string `json:"roleKey" form:"roleKey" gorm:"uniqueIndex;size:128;comment:角色权限字符串"` // 角色权限字符串
	DataScope string `json:"dataScope" form:"dataScope" gorm:"size:128;comment:数据范围"`            // 数据范围
	IsAdmin   bool   `json:"isAdmin" form:"isAdmin" gorm:"comment:是否管理员"`                        // 是否管理员
	IsDefault bool   `json:"isDefault" form:"isDefault" gorm:"comment:是否默认"`                     // 是否默认

	Menus []*SysMenu `json:"menus,omitempty" gorm:"many2many:sys_role_menu;foreignKey:RoleId;joinForeignKey:RoleId;References:MenuId;JoinReferences:MenuId"` // 菜单
	model.GAllInject
}

func (SysRole) TableName() string {
	return "sys_role"
}

func (s *SysRole) MakeMenus(mids []string) {
	s.Menus = make([]*SysMenu, len(mids))
	for i, mid := range mids {
		m := NewSysMenu()
		m.MenuId = mid
		s.Menus[i] = m
	}
}
